<?php

namespace app\admin\command;

use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\Db;

/**
 * 菜品信息自动处理命令
 * 用于定时任务自动处理未处理的菜品信息
 */
class FoodDishProcessor extends Command
{
    protected function configure()
    {
        $this
            ->setName('food:dishprocessor')
            ->setDescription('自动处理未处理的菜品信息');
    }

    protected function execute(Input $input, Output $output)
    {
        $output->writeln("开始执行菜品信息自动处理任务...");
        
        try {
            // 直接从数据库获取未处理的菜品（ai_called = 0），限制每次处理10个
            $dishes = Db::name('food_dish')
                ->where('ai_called', 0)
                ->field('id, name')
                ->limit(10)
                ->select();
                
            if (empty($dishes)) {
                $output->writeln("没有需要处理的菜品");
                return;
            }
            
            $output->writeln("获取到未处理菜品数量: " . count($dishes));
            
            // 调用API控制器中的方法处理菜品
            $apiController = new \app\api\controller\FoodIngredient();
            $result = $apiController->batchGetDishInfo();
            
            if (isset($result['code']) && $result['code'] == 200) {
                $output->writeln("处理成功: " . json_encode($result['data'], JSON_UNESCAPED_UNICODE));
            } else {
                $output->writeln("处理失败: " . (isset($result['msg']) ? $result['msg'] : '未知错误'));
            }
        } catch (\Exception $e) {
            $output->writeln("处理过程中发生错误: " . $e->getMessage());
        }
        
        $output->writeln("菜品信息自动处理任务执行完成");
    }
}